Computer programs that control equipment which must be attended to whenever the equipment requires such attention are called real time programs. Such programs include "real time" processes which must be available to be executed at any time that the connected equipment requires. Examples of such real time processes are those processes controlling a telephone switching system, controlling an ongoing manufacturing process, or controlling a moving vehicle. In all of these applications, the computer programs, i.e., the computer software, cannot readily be withdrawn from service for debugging or updating, i.e., software maintenance. The prior art solution to this problem has typically been to provide an entire backup system, hardware and software, so that the backup system can be switched into active use while the system being backed up is taken out of service for software maintenance. The need to duplicate the entire system, and the complexities of switching between the two systems, has made such backup approaches expensive to build and expensive to operate. One such backup arrangement is described in "Life Cycle Support and Update of No. 4 ESS Software," by E. A. Davis and R. J. Healey, 1982 IEEE Document No. 0536-1486/82/0000-0216, page 5G.5.1, 1982. While such expenditures might be justified by the need to provide backups of low reliability hardware, it is well known that the reliability of hardware is very high today, and is improving with each new generation of hardware.
It would therefore be useful to have a program updating system which allows the updating of programmed processes in situ without significantly interfering with the execution of the process.